package uskg.kotoriforest.api;

//public interface Interface {
//    public static final int SIZE = 100;
////    public abstract void method();
//
//    public default void method2() {
//        System.out.println("method2");
//        method4();
//    }
//
//    public static void method3() {
//        System.out.println("method3");
//        method4();
//    }
//
//    private static void method4() {
//        System.out.println("method4");
//    }
//
//    public interface Interface2 {
//
//    }
//}
//
//abstract class Test1 implements Interface , Interface.Interface2 {
//    public static void main(String[] args) {
//        Interface.method3();
//    }
//}

//public interface Interface {
//    void method1();
//    void method2();
//}
//
//interface Api {
//    void method1();
//    void method3();
//}
//
//class Test implements Interface, Api{
//    @Override
//    public void method1() {
//        System.out.println("method1");
//    }
//
//    @Override
//    public void method3() {
//
//    }
//
//    @Override
//    public void method2() {
//
//    }
//}

//public interface Interface {
//    void method1();
//    default void method2(){}
//}
//
//interface Api {
//    static void method3() {}
//    private static void method4() {}
//}
//
//interface Outer extends Interface, Api {
//    default void method5() {
//        method1();
//        method2();
//        Api.method3();
//        // 子接口不能继承父接口的static和private方法
//    }
//}
//
//class Test implements Outer {
//    @Override
//    public void method1() {
//
//    }
//
//    @Override
//    public void method2() {
//        Outer.super.method2();
//    }
//
//    @Override
//    public void method5() {
//        Outer.super.method5();
//    }
//}

//public interface Interface {
//    int NUMBER = 0X1234;
//    static void method(){
//        System.out.println("method");
//    };
//}
//
//class Test implements Interface{
//    public static void main(String[] args) {
//        System.out.println(Interface.NUMBER); // OK
//        System.out.println(Test.NUMBER); // OK
//        Interface.method(); // OK
////        Test.method(); // error: static 方法通过其的定义接口调用 不能通过实现类调用
//    }
//}

//public interface Interface {
//    // default 可以看作是用来顶替 abstract 的位置的
//    // 如果什么也不写会默认是 abstract 而 default 就是为了声明该函数不是抽象函数，具有函数体
//    public default void method1() {
//        System.out.println("method1");
//    }
//
//    default void method2() {
//        System.out.println("method2");
//    }
//
//    default void method3() {
//        // default 函数可以调用其他的default、static、private、private static 方法
//        method1();
//        method2();
//        System.out.println("method3");
//    }
//}
//
//class Test implements Interface {
//    @Override
//    public void method1() {
////        Interface.super.method1();
//        System.out.println("Test::method1");
//    }
//
//    public static void main(String[] args) {
//        Test test = new Test();
//        test.method3();
//    }
//}

//public interface Interface {
//    default void method() {
//        System.out.println("Interface method");
//    }
//}
//
//interface Api {
//    default void method() {
//        System.out.println("Api method");
//    }
//}
//
//interface IProgram extends Interface, Api {
//    @Override
//    default void method() {
////        Interface.super.method();
////        Api.super.method();
//        System.out.println("IProgram method");
//    }
//}

//public interface Interface {
//    default void method1() {
//        System.out.println("Interface method1");
//    }
//
//    void method2();
//
//    private static void method3() {
//
//    }
//}
//
//class SuperClass {
//    public void method1() {
//        System.out.println("SuperClass method1");
//    }
//
//    public void method2() {
//        System.out.println("SuperClass method2");
//    }
//}

//class SubClass extends SuperClass implements Interface {
//    public static void main(String[] args) {
//        SubClass subClass = new SubClass();
//        subClass.method1();
//        subClass.method2();
//
//        System.out.println("-----------------------------");
//        new SubClass() {
//            @Override
//            public void method1() {
//                System.out.println("SubClass method1");
//            }
//        }.method1();
//    }
//}

//class SubClass extends SuperClass implements Interface {
//    @Override
//    public void method1() {
//        System.out.println("SubClass method1");
//    }
//
//    public void exec() {
//        method1(); // 调用自己的
//        super.method1(); // 调用父类的
//        Interface.super.method1(); // 调用父接口的
//    }
//
//    public static void main(String[] args) {
//        new SubClass().exec();
//    }
//}